package 链表;

/**
 * @author aodre , QQ : 480029069
 * @date 2023/1/30 11:24
 */
public class leetcode1669合并两个链表 {
    /*
     还是 要考虑 很多的情况的！
     当 node需要 向下一个 节点 移动的时候， index 就需要 +1
     */
    public ListNode mergeInBetween(ListNode list1, int a, int b, ListNode list2) {
        ListNode node = list2;
        // fian list2 tail Node
        while(node.next != null){
            node = node.next;
        }
        ListNode tail = node;
        node = list1;
        int index = 1;
        while(node.next != null){
            if(index == a){
                ListNode temp = node.next;
                node.next = list2;
                node = temp;
                /*
                  出现的 问题 主要 在 这里，node 向下一个 节点 移动的时候
                  index 没有 +1， 导致 花费了一些时间 找 bug
                 */
                index++;
                if(a == b){
                    tail.next = node.next;
                    break;
                }
            }
            if(index == b){
                // System.out.println(index);
                // System.out.println(node.next.val);
                tail.next = node.next.next;
                break;
            }
            index++;
            node = node.next;
        }
        return list1;
    }

    // node
    private class ListNode{
        int val;
        ListNode next;
    }

}
